1. Field of the Invention
This invention relates in general to a printing systems, and more particularly to a method and apparatus for determining how to process incoming print jobs.
2. Description of Related Art
Printers receive print data from a source, such as a single host computer or from a network that contains at least one host computer or network server. One recent development with respect to laser printers is the addition of a “memory option,” which is an internal memory device such as flash RAM (Random Access Memory) or a hard disk drive, in which each type of memory can store files containing printed data. In some conventional printers, the memory device (e.g., hard disk) is of a sufficient size to store many print jobs at one time. Moreover, the “normal” temporary memory storage device (i.e., typically volatile RAM) used to store incoming print jobs may also be of a sufficient size to store many print jobs at one time, even as the printer is in the process of printing an earlier-received print job.
In typical desktop personal computer (PC) environments, print jobs are submitted (via either a direct connection or via a network) to a printer that contains sufficient memory to accept more than one entire print job, and by using this capability, a quick “screen release” is achieved. The term “screen release” represents the concept that, once a print job is accepted by a printer, the desk top PC is “released” by that printer, and the PC is no longer waiting for the printer to continue accepting the data. Until conventional printers accept all of the data for a particular print job from the host computer (i.e., the PC), the host computer can be unusable by its human user (“locked up”) until the active printing session is complete. An active printing session becomes “complete” generally when the print job has been completely accepted by the printer. At that time, the printer's hardware communicates to the host PC's hardware that the job has been accepted.
The desire to achieve a quick screen release has produced various solutions in the printer field of art. One conventional solution is to implement a “print spooler” in various operating systems, including PC operating systems (e.g., Microsoft Windows 95™, IBM OS/2™), as well as network operating systems (e.g., Novell Netware™, and IBM LAN Server™). Another conventional solution is to add more memory to the printers so as to allow the printers to completely accept various print jobs long before they are physically printed.
In addition, a printer may contain one or more attachments over which print data is received. Attachments may be physical or logical. Examples of attachments are Ethernet, Twinax, Parallel port, and the despooler. Attachments represent a subset of a more abstract entity called a data channel. Print data is passed through a data channel to the multiplexer. Data channels may be recognized as common methods of printing. Examples of data channels include LPD (an printing protocol of TCP/IP), IPP (a new printing protocol of TCP/IP), Pserver (a printing service of Novell NetWare), and Appletalk (a Macintosh communications protocol).
In a printer, a hard disk may be used as a spooling device, or for other uses. When used as a device to hold spooled jobs, some mechanism is required for dynamically determining how to process an incoming job. In general, an incoming job may be directed to the hard disk (spooled), or it may be directed to the print engine, or the transmission of job data may be temporally suspended. Some types of jobs, and some print channels, do not work correctly when a job is directed to the spooler. Other jobs or data channels do not work correctly when a job is send directly to the print engine. Additionally, there are conditions under which it is necessary to temporarily suspend the processing of a new job.
There have been some attempts to control spooling of print jobs. However, these have been unsophisticated. Current controllers do not have the capability of examining the attributes of a print job, configuration parameters or other data to decide how to process a print job.
It can be seen that there is a need for a method and apparatus for determining how to process incoming print jobs.
It can also be seen that there is a need for a method and apparatus for examining data in the incoming job and processing the attributes of the job, configuration parameters in the printer and the state of the printer engine and spooler to determine how to process the incoming print jobs.